package main

import "fmt"

type Usb interface {
	//声明了两个没有实现的方法
	Start()
	Stop()
}

type Phone struct {
	Name string
}

// 让Phone 实现Usb接口的方法
func (p Phone) Start() {
	fmt.Println("手机开始工作")
}

func (p Phone) Stop() {
	fmt.Println("手机停止工作")
}

type Camera struct {
	Name string
}

// 让相机 实现Usb接口的方法
func (c Camera) Start() {
	fmt.Println("相机开始工作")
}

func (c Camera) Stop() {
	fmt.Println("相机停止工作")
}

type Computer struct {
}

// 这个方法接受Usb这个接口类型
func (com Computer) Working(usb Usb) {
	//通过接口调用方法
	usb.Start()
	usb.Stop()
}

func main() {
	// 定义一个接口数组 可以存放phone 和 camera
	//体现多态数组
	var usbArr [3]Usb
	usbArr[0] = Phone{"vivo"}
	usbArr[1] = Phone{"小米"}
	usbArr[2] = Camera{"尼康"}
	fmt.Println(usbArr)
}
